﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Globalization;
using System.Threading;
using System.Web.UI;
using System.Web.UI.WebControls;

using Logger;
using System.Text.RegularExpressions;

/// <summary>
/// Summary description for Common
/// </summary>
public class Common
{
    public const string sPathUpTinTuc = "~/Upload/TinTuc/";
    public const string sPathUpTinTucThumbail = "~/Upload/TinTuc/Thumbail/";
    public const string sPathUpQuangCao = "~/Upload/QuangCao/";
    public const string sPathUpQuangCaoThumbail = "~/Upload/QuangCao/Thumbail/";
    public const string sPathUpSachHay = "~/Upload/SachHay/";
    public const string sPathUpSachHayThumbail = "~/Upload/SachHay/Thumbail/";
    public const string sPathUpThanhVien = "~/Upload/ThanhVien";
    public const string sPathUpTuyenDung = "~/Upload/TuyenDung";
    public const string sPathUpKHDoiTac = "~/Upload/KhachHang";
    public const string sPathUpLienKet = "http://babyfood.vn";
    public const string sPathAnhDaidien = "~/Upload/AnhDaiDien/";
    public const string sPathUpBoSuuTap = "~/Upload/BoSuuTap/";
    public const string sPathUpBoSuuTapThumbail = "~/Upload/BoSuuTap/Thumbail/";

    // Các hằng khởi tạo trong CƠ SỞ DỮ LIỆU NHÓM TIN TỨC & NHÓM SUB TIN TỨC
    public const string Monngontheotuoi = "Món ngon Theo Tuổi";
    public const string Chuyenbabau = "Chuyện Bà Bầu";
    public const string BepCuaMe = "Bếp của mẹ";
    public const string Mebauchiase = "Mẹ bầu chia sẻ";
    public const string home = "BabyFood";
    public const string gcg = "[GCG]";

    public Common()
    {
        //
        // TODO: Add constructor logic here
        //
    }
    /// <summary>
    /// Get các tham số người dùng sau khi login
    /// Input: sKey("Id","TenTruyCap","HoTen")
    /// Output: Giá trị của khóa sKey trong HttpContext.Current.User.Identity
    /// </summary>
    public static string GetKeyUserInfo(string sKey)
    {
        if (HttpContext.Current.User.Identity.Name.Trim().Length == 0) return string.Empty;
        string[] UserInfo = HttpContext.Current.User.Identity.Name.Split(';');
        if (sKey.Equals("Id")) return UserInfo.GetValue(0).ToString();
        if (sKey.Equals("TenTruyCap")) return UserInfo.GetValue(1).ToString();
        if (sKey.Equals("HoTen")) return UserInfo.GetValue(2).ToString();
        if (sKey.Equals("KhachHangVip")) return UserInfo.GetValue(3).ToString();
        return string.Empty;
    }
    /// <summary>
    /// Chuẩn hóa chuỗi dữ liệu khi người dùng input
    /// Input: sContent (chuỗi cần chuẩn hóa)
    /// Output: Chuỗi sau khi replace các ký tự đặc biệt
    /// </summary>
    public static string StandardString(string sContent)
    {
        sContent = sContent.Trim();
        
        sContent = sContent.Replace("<td>", "");
        sContent = sContent.Replace("</td>", "");
        sContent = sContent.Replace("<tr>", "");
        sContent = sContent.Replace("</tr>", "");
        sContent = sContent.Replace("<table>", "");
        sContent = sContent.Replace("</table>", "");
        sContent = sContent.Replace("<script", "");
        sContent = sContent.Replace("</script>", "");
        
        sContent = sContent.Replace("OR", "");
        sContent = sContent.Replace("ALTER", "");
        sContent = sContent.Replace("DROP", "");
        return sContent;
    }

    public static string StandardStringlink(string sContent)
    {
        sContent = sContent.Trim();
        sContent = sContent.Replace("~", "");
        return sContent;
    }
    /// <summary>
    /// Đọc khóa thiết lập nằm trong thẻ <appSetting></appSetting> trong Web.config
    /// Input: sKeyApp (tên khóa thiết lập)
    /// Output: Giá trị tương ứng với khóa thiết lập
    /// </summary>
    public static string ReadAppSetting(string sKeyApp)
    {
        return ConfigurationManager.AppSettings[sKeyApp];
    }
    /// <summary>
    /// Chuẩn hóa chuỗi thành viết hoa mỗi từ
    /// Input: sText (Chuỗi cần chuẩn hóa)
    /// Output: Chuỗi sau khi chuẩn hóa
    /// </summary>
    public static string StringToTitleCase(string sText)
    {
        CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
        TextInfo textInfo = cultureInfo.TextInfo;
        return textInfo.ToTitleCase(sText);
    }
    /// <summary>
    /// Ghi log lỗi và quy trình
    /// Input: sPage(Tên của trang cần Log), string sFunction(Tên của hàm cần Log), string sMessage(Nội dung Log)
    /// </summary>
    public static void WriteLog(string sPage, string sFunction, string sMessage)
    {
        try
        {
            string LogPath = HttpContext.Current.Server.MapPath("~/LogInfo");
            if (!System.IO.Directory.Exists(LogPath))
            {
                System.IO.Directory.CreateDirectory(LogPath);
            }
            CLogger TestLogger = new CLogger();
            TestLogger.Initialize(LogPath, "BabyFood.log", 2);
            TestLogger.LogInformation(sPage, sFunction, sMessage);
            TestLogger.Terminate();
        }
        catch (Exception)
        {
        }
    }

    /// <summary>
    /// Mã hóa chuỗi thành chuỗi MD5
    /// Input: sToEncrypt (Chuỗi cần mã hóa)
    /// Output: Chuỗi sau khi mã hóa
    /// </summary>
    public static string EncryptMD5(string sToEncrypt)
    {
        System.Text.UTF8Encoding ue = new System.Text.UTF8Encoding();
        byte[] bytes = ue.GetBytes(sToEncrypt);

        // encrypt bytes
        System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
        byte[] hashBytes = md5.ComputeHash(bytes);

        // Convert the encrypted bytes back to a string (base 16)
        string hashString = "";

        for (int i = 0; i < hashBytes.Length; i++)
        {
            hashString += Convert.ToString(hashBytes[i], 16).PadLeft(2, '0');
        }

        return hashString.PadLeft(32, '0');
    }
    /// <summary>
    /// Get Ngày giờ server
    /// Output: Ngày giờ được lấy tại Server
    /// </summary>
    public static DateTime GetServerDateTime()
    {
        return DateTime.Now.ToUniversalTime().AddHours(7);
    }

    /// <summary>
    /// Sử dụng để Convert Chữ Số Có Dấu sang Số Không Dấu có gạch ở giữa(Dùng ASCII)
    /// </summary>
    /// <param name="text"></param>
    /// <returns></returns>
    public static string ConvertToUnSign(string text)
    {

        for (int i = 33; i < 48; i++)
        {

            text = text.Replace(((char)i).ToString(), "");

        }



        for (int i = 58; i < 65; i++)
        {

            text = text.Replace(((char)i).ToString(), "");

        }



        for (int i = 91; i < 97; i++)
        {

            text = text.Replace(((char)i).ToString(), "");

        }

        for (int i = 123; i < 127; i++)
        {

            text = text.Replace(((char)i).ToString(), "");

        }

        text = text.Replace(" ", "-");

        Regex regex = new Regex(@"\p{IsCombiningDiacriticalMarks}+");

        string strFormD = text.Normalize(System.Text.NormalizationForm.FormD);

        return regex.Replace(strFormD, String.Empty).Replace('\u0111', 'd').Replace('\u0110', 'D');

    }

    /// <summary>
    /// Chuẩn hóa chuỗi dữ liệu khi người dùng input
    /// Input: sContent (chuỗi cần chuẩn hóa)
    /// Output: Chuỗi sau khi replace các ký tự đặc biệt
    /// </summary>
    public static string StandardStringjquery(string sContent)
    {
        sContent = sContent.Trim();
        sContent = sContent.Replace("Monday", "Hai");
        sContent = sContent.Replace("Tuesday", "Ba");
        sContent = sContent.Replace("Wednesday", "Tư");
        sContent = sContent.Replace("Thursday", "Năm");
        sContent = sContent.Replace("Friday", "Sáu");
        sContent = sContent.Replace("Saturday", "Bảy");
        sContent = sContent.Replace("Sunday", "Chủ Nhật");
        return sContent;
    }

    // Dung de cat chuoi hinh anh cu trong database cho phu hop voi phien ban @babyfood 2013
    // -- ~/Upload/AnhDaiDien/050212101909tre4.jpg 
    // -- ~/Images/no_image.jpg
    public static string spilitString(string str)
    {
        int length = str.Length - 1;

        string tmp = str.Substring(0, 8);
        if (tmp.Equals("~/Images/"))
        {
            return str.Substring(9, length);
        }
        else
        {
            return str.Substring(20, length);
        }
    }
}
